#include <iostream>
using namespace std;

const int maxsize=100;
float a[maxsize];
int n;
void print()
{
    for (int i = 0; i < n*2 ;++i) {
         cout<<a[i]<<" ";
    }
    cout<<endl;
}
void  makeChange(int c,int cnt1,int cnt2,int &k) //cnt1表示当前可以购买0.5角的人数 ,cnt2表示购买1的人数
{
    if(cnt2==n)
    {
        //打印
        print();
        k++;
        return ;//此时所有人购买成功
    }
    if(cnt1>cnt2&&cnt1==n)//如果cnt1已经全部用完
    {
        //从c到n-1全部赋值为1
        for(int i=c;i<2*n;++i)
            a[i]=1;
        print();
        k++;
        return ;
    }
    else if(cnt1!=n&&cnt1>cnt2)
    {
        a[c]=0.5;
        makeChange(1+c,cnt1+1,cnt2,k);  //继续0.5
        a[c]=1;
        makeChange(c+1,cnt1,1+cnt2,k);  //继续1
    }
    else
    {
        a[c]=0.5;
        makeChange(c+1,cnt1+1,cnt2,k);  //继续0.5
    }
}

int main() {
    cin>>n;
    int k=0;
    makeChange(0,0,0,k);
    cout<<k;

    return 0;
}
